// import "DPI-C" function int mem_read(input int raddr);
// import "DPI-C" function void mem_write(
//   input int waddr, input int wdata, input byte wmask);
//
// // `define TEST
//
// module ysyx_23060189_DSRAM #
// (
//   parameter integer dataWidth = 32,
//   parameter integer addrWidth = 32
// )
// (
//   /* Slave <=> Slave interface */
//   input  wire                    ACLK,
//   input  wire                    ARESETn,
//
//   input  wire                    ren,
//   input  wire [addrWidth-1 : 0]  raddr,
//   output reg  [dataWidth-1 : 0]  rdata,
//   output reg                     rvalid,
//
//   input  wire                    wen,
//   input  wire [addrWidth-1 : 0]  waddr,
//   input  wire [dataWidth-1 : 0]  wdata,
//   input  wire [7 : 0]            wmask,
//   output reg                     wdone
// );
//   reg [255 : 0] dsram [dataWidth-1 : 0];
//
//   // read
//   always @(posedge ACLK) begin
//     if (ARESETn == 0) begin
//       rdata <= 0;
//       rvalid <= 1'b0;
//     end
//     else if (ren) begin
//       `ifndef TEST
//         rdata  <= mem_read(raddr);
//       `else
//         rdata  <= dsram[(raddr - 32'h80000000)/4];
//       `endif
//       rvalid <= 1'b1;
//     end
//     else begin
//       rdata <= rdata;
//       rvalid <= 1'b0;
//     end
//   end
//
//   // write
//   always @(posedge ACLK) begin
//     if (ARESETn == 0) begin
//       wdone <= 1'b0;
//     end
//     else if (wen) begin
//       `ifndef TEST
//         mem_write(waddr, wdata, wmask);
//       `else
//         dsram[(waddr - 32'h80000000)/4] <= wdata;
//       `endif
//       wdone <= 1'b1;
//     end
//     else wdone <= 1'b0;
//   end
//
// endmodule
